/*******************************************************************************
* CHIPSEA F61 UART HAL
*******************************************************************************/

#include "hal_cs_f70_uart.h"

#ifdef CS_F70

void User_UART0_Init()
{
    uart_config_t r_uart_config;
    
    /*使能串口时钟*/
	rcc_apb_periph_clock_config(RCC_APB_PERI_UART,ENABLE);   
    /*选择时钟源为系统时钟*/
	rcc_uart_clksource_config(RCC_CLKSOURCE_SYSCLK);
	
    /*波特率选择 */
	r_uart_config.uart_baudrate_data = 115200;	
	/*数据长度 */
	r_uart_config.uart_data_length = UART_DATA_LENGTH_8BIT;	
	/*校验使能 */
	r_uart_config.uart_parity_enable_ctrl = DISABLE;
    /*奇偶校验码产生控制位 */
	r_uart_config.uart_parity_odd_even_ctrl = DISABLE;
    /*当使能奇偶校验时选择的校验方式 */
	r_uart_config.uart_parity_select = UART_PARITY_EVEN;
    /*停止位 */
	r_uart_config.uart_stop_bit = UART_STOP_BIT_1;			
	/*串口初始化 */
    uart_init(&r_uart_config);	
	
    /*复用PA3为RX */
	system_io_multiples_set(MFP_PA_3, MFP_FUNC_1);
    /*复用PA2为TX */
	system_io_multiples_set(MFP_PA_2, MFP_FUNC_1);
}

//加入以下代码可以使用printf

#pragma import(__use_no_semihosting)

struct __FILE
{
    int a;
};

FILE __stdout;
void _sys_exit(int x)
{

}

int fputc(int ch, FILE *stream)
{
    uart_data_send((uint8_t)ch);
    #if UART_INT_EN_STAT==DISABLE
    while(uart_status_get(UART_THRE)==0)
    {}
    #endif
    return ch;
}


#endif /* End of CS_F61 */
